1. Statement of the Technical Field
The present invention relates to the field of inter-process communications and more particularly to configuring client processes for communication with server processes.
2. Description of the Related Art
Inter-process communications relates to the exchange of information between two or more computing processes, whether the processes are disposed together within a single, computing device, or whether the processes are remotely positioned from one another about a computer communications network. Traditionally, separate computing processes can communicate with one another over communicative links established for the purpose of exchanging information. In most circumstances, information can be exchanged using a common communications protocol negotiated prior to the establishment of, or during the course of establishing a communicative link.
In many cases, the common communications protocol utilized by two or more computing processes to exchange information can be predetermined before any attempt is made to establish a communicative link. For example, in the context of the Internet, Web content can be exchanged between a content server and a content browser using the hypertext transfer protocol (HTTP) over TCP/IP. Still, communicative protocols are not necessarily limited to the physical network layer based exchange of data. Rather, communicative protocols can include any collection of operations and communicative configurations required to permit the exchange of information between two or more computing processes. In this regard, a communicative protocol can include not only the mechanism for transferring data between the processes, but also ancillary settings and operations such as encryption, compression and tunneling protocols, to name a few.
In certain situations, a communications protocol will not have been pre-determined as between a client computing process and a server computing process. In particular, where the server computing process has been configured to communicate with a multiplicity of client computing processes using many different communications protocols, it cannot be pre-determined which computing process to utilize for any one session between client and server. In consequence, oftentimes, client computing processes are left to select a suitable communications protocol through a process of trial and error. Specifically, in the prototypical circumstance, the client process can include a table of multiple possible communications protocols. As such, the client process can attempt to establish a communicative link with the server process using each possible communications protocol until such time as a communicative link has been successfully established.
The foregoing process for establishing a communicative link between server processes can be effective in as much as ultimately, a communicative link can be established using one of the known communications protocols. Still, the skilled artisan will recognize the terrible waste of resources which can occur with each failure to establish a communicative link using a particular communications protocol other than the communications protocol ultimately selected in establishing the communicative link. To the extent possible, it would be preferable to avoid the process of trial and error in selecting a communications protocol to achieve a greater level of performance.